
function AjoutSejourController($scope, $rootScope, UploadManager, Sejour, Agence, filterFilter) {
	$scope.scAgence = null;/*instance objet Agence*/
	$scope.agences = null;/*toutes les agences*/
	$scope.activites = null;
	$scope.types = null;
	$scope.themes = null;
	$scope.pays = null;	
	$scope.regions = null;
	$scope.alerts = [];/*pile des alertes*/
	$scope.files = [];
    $scope.percentage = 0;
    $scope.submitted = false;
    $scope.selection = [];

    var _sejourId; // identiifiant du sejour

	var addAlert = function(typeAlert, msgAlert) {
		$scope.alerts.push({type: typeAlert, msg: msgAlert});
	};

	$scope.closeAlert = function(index) {
		$scope.alerts.splice(index, 1);
	};

	var resetForm = function () {
		$scope.sejour = {paysId : 7};
		$scope.submitted = false;
		$scope.files = [];
    }

    var UploadImage = function () {
		if( $scope.sejour.imageUrl != "" ) {
        	UploadManager.uploadLast();
		}
    };
    
    // Gestion des thématiques
    $scope.toggleSelection = function toggleSelection(thematique) {
	    var idx = $scope.selection.indexOf(thematique);

	    // is currently selected
	    if (idx > -1) {
	      $scope.selection.splice(idx, 1);
	    }

	    // is newly selected
	    else {
	      $scope.selection.push(thematique);
	    }
	};

    $rootScope.$on('fileAdded', function (e, call) {
        $scope.files[0] = call;

        if( $scope.sejour == null ) {
        	$scope.sejour = {imageUrl : call.name};
        } else {
			$scope.sejour.imageUrl = call.name;// on met à jour la valeur dans le model avec le nom de l'image
        }

        $scope.$apply();
    });
      
    $rootScope.$on('uploadProgress', function (e, call) {
        $scope.percentage = call;
        $scope.$apply();
    });

    $rootScope.$on('uploadDone', function () {
    	redirectionNouveauSejour ();
    });

    $scope.removeImage = function() {
		$scope.files = [];
		$scope.sejour.imageUrl = "";	  
	}

    var redirectionNouveauSejour = function () {
    	// redirect vers sejour id 
		window.location.href="/sejour/edition?id=" + _sejourId;
    }

	/*remplis la liste des agences*/
	var retourneToutesLesAgences = function () {
		$scope.scAgence = new Agence();
		$scope.scAgence.retourneAgences().then(function(e) {
			$scope.agences = e.data;
		});
	}

	var initialiseListeDonnees = function () {
		$scope.scSejour.retourneListesDonneesSejour().then(function(e){
			$scope.thematiques = e.data.thematiques;
			$scope.pays = e.data.pays;
			$scope.regions = e.data.regions;
			$scope.activites = e.data.activites;
			$scope.types = e.data.types;
		});
	}

	$scope.post = function( isValid ) {
		if( !isValid ) {
			$scope.submitted = true;
			return false;
		}

		/* Thématiques du séjour */
		$scope.sejour["thematiques"] = $scope.selection;

		$scope.scSejour = new Sejour($scope.sejour);
		$scope.scSejour.ajouterSejour().then(function(e){
			_sejourId = e.data.id;

			document.getElementById('id').value = _sejourId;

			addAlert('success', "Le s\351jour " + e.data.titre + " a \351t\351 correctement cr\351\351 en base.");

			UploadImage();

		}).then(function() {
			var imageUrl = $scope.sejour.imageUrl;

			if( typeof imageUrl == "undefined" || imageUrl == "" ) {
				redirectionNouveauSejour ();
			}
			resetForm();
		});
	};
	
	$scope.cancel = function() {
		resetForm();
	}
	
	$scope.genererNouveauCode = function() {
		$scope.scSejour.rechercherNouveauCodeSejour().then( function(e) {
			$scope.sejour.code = e.data.nouveauCode;
		});		
	}	


	/* Initilisation des données de la vue */
	retourneToutesLesAgences();

	$scope.scSejour = new Sejour();
	$scope.themes = $scope.scSejour.retourneThemesSejours();
	initialiseListeDonnees();

	resetForm();
}
